<template>
  <div class="home page-component">
    <el-carousel indicator-position="outside">
      <el-carousel-item v-for="item in 2" :key="item">
        <img src="~assets/images/web-banner1.png" alt="" />
      </el-carousel-item>
    </el-carousel>
    <!-- 搜索 -->
    <div class="search-container">
      <div class="search-wrapper">
        <div class="hospital-search">
          <el-autocomplete
            class="search-input"
            prefix-icon="el-icon-search"
            v-model="state"
            :fetch-suggestions="querySearchAsync"
            placeholder="点击输入医院名称"
            @select="handleSelect"
          >
            <span
              slot="suffix"
              class="search-btn v-link highlight clickable selected"
              >搜索
            </span>
          </el-autocomplete>
        </div>
      </div>
    </div>
    <!-- bottom -->
    <div class="bottom">
      <div class="left">
        <div class="home-filter-wrapper">
          <div class="title">医院</div>
          <div>
            <div class="filter-wrapper">
              <span class="label">等级：</span>
              <div class="condition-wrapper">
                <!-- 等级  添加绑定事件 hostypeSelect-->
                <span
                  class="item v-link clickable"
                  v-for="(item, index) in hostypeList"
                  :key="index"
                  :class="hostypeActiveIndex == index ? 'selected' : ''"
                  @click="hostypeSelect(item.value, index)"
                >
                  <!-- 使用插值表达式得到名称 -->
                  {{ item.name }}
                </span>
              </div>
            </div>
            <div class="filter-wrapper">
              <span class="label">地区：</span>
              <div class="condition-wrapper">
                <!-- 地区 -->
                <span
                  class="item v-link clickable"
                  v-for="(item, index) in districtList"
                  :key="index"
                  :class="provinceActiveIndex == index ? 'selected' : ''"
                  @click="districtSelect(item.value, index)"
                >
                  {{ item.name }}
                </span>
              </div>
            </div>
          </div>
        </div>
        <div class="v-scroll-list hospital-list">
          <div
            v-for="(item, index) in list"
            :key="index"
            class="v-card clickable list-item"
            @click="show(item.hoscode)"
          >
            <div class="">
              <div class="hospital-list-item hos-item" index="0">
                <div class="wrapper">
                  <div class="hospital-title">{{ item.hosname }}</div>
                  <div class="bottom-container">
                    <div class="icon-wrapper">
                      <span class="iconfont"></span>
                      {{ item.param.hostypeString }}
                    </div>
                    <div class="icon-wrapper">
                      <span class="iconfont"></span>
                      每天{{ item.bookingRule.releaseTime }}放号
                    </div>
                  </div>
                </div>
                <img
                  :src="'data:image/jpeg;base64,' + item.logoData"
                  :alt="item.hosname"
                  class="hospital-img"
                />
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="right">
        <div class="common-dept">
          <div class="header-wrapper">
            <div class="title">常见科室</div>
            <div class="all-wrapper">
              <span>全部</span>
              <span class="iconfont icon"></span>
            </div>
          </div>
          <div class="content-wrapper">
            <span class="item v-link clickable dark">神经内科 </span>
            <span class="item v-link clickable dark">消化内科 </span>
            <span class="item v-link clickable dark">呼吸内科 </span>
            <span class="item v-link clickable dark">内科 </span>
            <span class="item v-link clickable dark">神经外科 </span>
            <span class="item v-link clickable dark">妇科 </span>
            <span class="item v-link clickable dark"> 产科 </span>
            <span class="item v-link clickable dark">儿科 </span>
          </div>
        </div>
        <div class="space">
          <div class="header-wrapper">
            <div class="title-wrapper">
              <div class="icon-wrapper">
                <span class="iconfont title-icon"></span>
              </div>
              <span class="title">平台公告</span>
            </div>
            <div class="all-wrapper">
              <span>全部</span>
              <span class="iconfont icon"></span>
            </div>
          </div>
          <div class="content-wrapper">
            <div class="notice-wrapper">
              <div class="point"></div>
              <span class="notice v-link clickable dark"
                >关于延长北京大学国际医院放假的通知
              </span>
            </div>
            <div class="notice-wrapper">
              <div class="point"></div>
              <span class="notice v-link clickable dark"
                >北京中医药大学东方医院部分科室医生门诊医
              </span>
            </div>
            <div class="notice-wrapper">
              <div class="point"></div>
              <span class="notice v-link clickable dark">
                武警总医院号源暂停更新通知
              </span>
            </div>
          </div>
        </div>
        <div class="suspend-notice-list space">
          <div class="header-wrapper">
            <div class="title-wrapper">
              <div class="icon-wrapper">
                <span class="iconfont title-icon"></span>
              </div>
              <span class="title">停诊公告</span>
            </div>
            <div class="all-wrapper">
              <span>全部</span>
              <span class="iconfont icon"></span>
            </div>
          </div>
          <div class="content-wrapper">
            <div class="notice-wrapper">
              <div class="point"></div>
              <span class="notice v-link clickable dark">
                中国人民解放军总医院第六医学中心(原海军总医院)呼吸内科门诊停诊公告
              </span>
            </div>
            <div class="notice-wrapper">
              <div class="point"></div>
              <span class="notice v-link clickable dark">
                首都医科大学附属北京潞河医院老年医学科门诊停诊公告
              </span>
            </div>
            <div class="notice-wrapper">
              <div class="point"></div>
              <span class="notice v-link clickable dark"
                >中日友好医院中西医结合心内科门诊停诊公告
              </span>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
// 引入接口路径
import hospApi from "@/api/hosp/hospital";
import dictApi from "@/api/zdlb/dictlist";

export default {
  // 服务端的渲染 只渲染一次
  asyncData({ params, error }) {
    // params 可以得到路径中的值， error 得到异常信息
    //调用 这里调用的时候要加上关键字  retuen
    return hospApi.getPageList(1, 10, null).then((response) => {
      return {
        // 定义了一个变量 为 list 然后再把值敷值给 lsit
        list: response.data.content, // 医院列表信息
        // 总页数
        pages: response.data.totalPages,
      };
    });
  },
  // 定义一些变量 和初始值
  data() {
    return {
      searchObj: {},
      page: 1,
      limit: 10,

      hosname: "", //医院名称
      hostypeList: [], //医院等级集合
      districtList: [], //地区集合

      hostypeActiveIndex: 0,
      provinceActiveIndex: 0,
    };
  },
  created() {
    // 调用方法的地方
    this.init();
    // 调用getList
    // this.getList();不行
  },
  methods: {
    // 定义方法， 查询医院等级列表 和医院信息列表
    init() {
      // 查询医院等级列表
      dictApi.findByDictCode("Hostype").then((response) => {
        // 全部和等级一起遍历显示
        //  先清空 hostypeList
        this.hostypeList = [];
        // 向 hostypeList 里面添加 全部这个值
        this.hostypeList.push({ name: "全部", value: "" });
        // 把接口返回的数据， 添加到 hostypeList 里面去
        for (var i = 0; i < response.data.length; i++) {
          // 得到数组
          this.hostypeList.push(response.data[i]);
        }
      });
      // 查询地区数据
      dictApi.findByDictCode("Beijin").then((response) => {
        // 先清空 地区列表
        this.districtList = [];
        // 向 districtList 添加 全部这个值
        this.districtList.push({ name: "全部", value: "" });
        // 然后再循环遍历一下
        for (let i in response.data) {
          this.districtList.push(response.data[i]);
        }
      });
    },
    // 查询医院列表方法
    getList() {
      hospApi
        .getPageList(this.page, this.limit, this.searchObj)
        .then((response) => {
          for (let i in response.data.content) {
            //  数据集合
            this.list.push(response.data.content[i]);
          }
          // 页数
          this.page = response.data.totalPages;
        });
    },

    // 添加 等级信息事件绑定的方法然后进行查询 hostypeSelect 根据医院的等级查询
    hostypeSelect(hostype, index) {
      // 清空 list 集合
      this.list = [];
      // 设置当前页为 1
      this.page = 1;
      // 设置查询后的样式
      this.hostypeActiveIndex = index;
      this.searchObj.hostype = hostype;
      // 调用查询医院列表的方法
      this.getList();
    },
    // 添加地区信息事件的绑定方法 districtSelect 然后根据地区查询医院信息
    districtSelect(districtCode, index) {
      // 先清空 list
      this.list = [];
      // 设置当前页
      this.page = 1;
      // 设置查询后的样式
      this.provinceActiveIndex = index;
      this.searchObj.districtCode = districtCode;
      // 调用方法
      this.getList();
    },
    // 输入框搜索的方法 类似于百度的搜索方式
    //在输入框输入值，弹出下拉框，显示相关内容
    querySearchAsync(queryString, cb) {
      // 先清空 searchObj
      this.searchObj = [];
      // 然后再判断
      if (queryString == "") return;
      // 调用方法
      // 根据医院名称获取医院列表
      hospApi.getByHosname(queryString).then((response) => {
        // 循环遍历显示出来
        for (let i = 0, len = response.data.length; i < len; i++) {
          response.data[i].value = response.data[i].hosname;
        }
        cb(response.data);
      });
    },

    //在下拉框选择某一个内容，执行下面方法，跳转到详情页面中
    handleSelect(item) {
      // 目前只有页面路劲没有页面
      window.location.href = "/hospital/" + item.hoscode;
    },
    //点击某个医院名称，跳转到详情页面中
    show(hoscode) {
      window.location.href = "/hospital/" + hoscode;
    },
  },
};
</script>
